package it.gat.dao.impl;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import it.gat.dao.TipologiaDispositivoDAO;
import it.gat.model.TipologiaDispositivo;
import it.gat.util.dao.MySQLDAOFactory;

public class MySQLTipologiaDispositivoDAOImpl implements TipologiaDispositivoDAO {

	@Override
	public void insert(TipologiaDispositivo tipologia) throws SQLException {
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "INSERT INTO TipologiaDispositivo " +
		               "(descrizione) " +
		               "VALUES " +
		               "('"+tipologia.getDescrizione()+"')";
		stmt.executeUpdate(query);
		query = "SELECT LAST_INSERT_ID()";
		ResultSet rs = stmt.executeQuery(query);
		while (rs.next()) {
			tipologia.setIdTipologiaDispositivo(rs.getInt("LAST_INSERT_ID()"));
		}
		
	}

	@Override
	public TipologiaDispositivo retriveById(int id) throws SQLException {
		TipologiaDispositivo tipologiaDispositivo = new TipologiaDispositivo();
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "SELECT * " +
		               "FROM TipologiaDispositivo " + 
		               "WHERE IdTipologiaDispositivo = " + id;
		ResultSet rs = stmt.executeQuery(query);
		while (rs.next()) {
			tipologiaDispositivo.setIdTipologiaDispositivo(id);
			tipologiaDispositivo.setDescrizione(rs.getString("descrizione"));
			}
		return tipologiaDispositivo;
	}

	@Override
	public List<TipologiaDispositivo> retrieveAll() throws SQLException {
		List<TipologiaDispositivo> tipologieDispositivo = new ArrayList<TipologiaDispositivo>();
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "SELECT * " +
		               "FROM TipologiaDispositivo ";
		ResultSet rs = stmt.executeQuery(query);
		while (rs.next()) {
			TipologiaDispositivo tipologiaDispositivo = new TipologiaDispositivo();
			tipologiaDispositivo.setIdTipologiaDispositivo(rs.getInt("idtipologiadispositivo"));
			tipologiaDispositivo.setDescrizione(rs.getString("descrizione"));
			tipologieDispositivo.add(tipologiaDispositivo);
			}
		return tipologieDispositivo;
	}

	@Override
	public void update(TipologiaDispositivo tipologiaDispositivo) throws SQLException {
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "UPDATE TipologiaDispositivo " +
		               "SET descrizione='" + tipologiaDispositivo.getDescrizione() + "' " +
		               "WHERE idTipologiaDispositivo="+Integer.toString(tipologiaDispositivo.getIdTipologiaDispositivo());
		stmt.executeUpdate(query);

	}

	@Override
	public void delete(int idTipologiaDispositivo) throws SQLException {
		Connection conn = MySQLDAOFactory.createConnection(); 
		Statement stmt = conn.createStatement();
		String query = "DELETE FROM TipologiaDispositivo " +
		               "WHERE idTipologiaDispositivo="+Integer.toString(idTipologiaDispositivo);
		stmt.executeUpdate(query);
	}

}
